package com.example.commen.net.easyHttp.model;

import java.io.Serializable;

/**
 * author : Android 轮子哥
 * github : https://github.com/getActivity/EasyHttp
 * time   : 2019/05/19
 * desc   : 统一接口数据结构
 */
public class HttpData<T> implements Serializable {

    /**
     * 返回码
     */
    private int code;
    /**
     * 提示语
     */
    private String message;
    /**
     * 数据
     */
    private T data;
    public Long timestamp;

    public Long getTimestamp() {
        return timestamp;
    }

    public void setTimestamp(Long timestamp) {
        this.timestamp = timestamp;
    }

    public int getCode() {
        return code;
    }

    public String getMessage() {
        return message;
    }

    public T getData() {
        return data;
    }

    public void setCode(int code) {
        this.code = code;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public void setData(T data) {
        this.data = data;
    }

    /**
     * 是否请求成功
     */
    public boolean isRequestSucceed() {
        return code == 200;
    }


    /**
     * 提示使用后端返回的信息
     *
     * @return
     */
    public boolean isServiceError() {
        boolean isfail = (code <= 500 && code >= 400)//错误
                || code == 90001//提示后端返回信息
                || code == 10003//提示后端返回信息
                || code == 10004//账号或者密码错误
                || code == 10006//账号不可用
                || code == 10007//验证码过期，请重新获取
                || code == 10012//签名错误
                || code == 10013//气象服务异常
                || code == 10014//邀请码重复，请重新生成`
                || code == 30001;//入参参数校验失败
        return isfail;
    }


    /**
     * 是否 Token 失效
     * APP端自己提示
     */
    public boolean isTokenFailure() {
        return code == 10001//权限不足,提示并跳转登录页
                || code == 10002//未登录/无效token
                || code == 10009//证书（token）过期
//                        || code == 10010//手机号码已经注册
                || code == 10011//账户在其它设备登录，请重新登录并防止密码泄漏
                || code == 10005;//账号锁定
    }

    /**
     * 是否审核
     * APP端自己提示
     */
    public boolean isLoginApprovalFailure() {
        return code == 10016//由于【驳回驳回】，注册失败
                || code == 10015;//正在审核请耐心等待
    }

}